GradleからJettyを動かす+Deploy



概要

GradleからJetty動かして、何かしらのServeを行う。



内容

Gradle User Guide

http://www.monochromeroad.com/artifacts/gradle/userguide/userguide.html

の、

10 Webアプリケーションクイックスタート

http://www.monochromeroad.com/artifacts/gradle/userguide/web_project_tutorial.html

を参考に、


"Warプラグインについての詳細は26War プラグイン Jettyプラグインの詳細については28Jetty プラグインを参照してください。 Gradle配布物のsamples/webApplicationディレクトリにサンプルJavaプロジェクトがあります。"


とかあるので、適当にScriptをパクって、試す。


実践

単純に動かすだけなら、build.gradleに、

apply plugin : 'jetty'


と書くだけ、からの 

gradle jettyRunWar

スクリーンショット 2012-05-05 15.10.05.png

と表示されて、Jettyサーバが立ち上がる。

Gradleのwarコマンドと何かを関連づけておけば、このコマンドでwar内の生成物がjettyへとdeployされる。

⌘+.とかで終了できる。



アクセスしてみると、

スクリーンショット 2012-05-05 15.16.24.png

testって名前のフォルダから実行した。

testフォルダ上には、Jettyの構成が出来ている。

スクリーンショット 2012-05-05 15.17.55.png



Deploy

やりたいことは、

・Jettyに何かしらのアプリケーションをデプロイ。

実際には jettyRunWar コマンドは、warコマンドで生成したものを

deployする、との事なので、

warコマンドをbuild.gradleに書き加える。


apply plugin : 'jetty'

war {

    baseName = 'someWebApp'

    archiveName = "something"

    from 'war' 

 

    manifest {

        attributes 'Implementation-Title': 'something'

        attributes 'Implementation-Version': 'some version'

        attributes provider: 'gradle'

    }

}


で、

warフォルダーを用意して、その中にindex.htmlを置いてみた。

スクリーンショット 2012-05-05 16.08.26.png

実行してみる

スクリーンショット 2012-05-05 16.07.27.png

war化時のmanifestから、アプリケーション名が反映されているのが判る。

で、

アクセスしてみる

スクリーンショット 2012-05-05 16.09.09.png



run+deployをGradleの中から行う

ここからが本題、上記をgradleの中から行う。

(外側の別のGradleから実行してもいいんだけど、中からコントロールできた方が楽しい。)


実際に求めるコントロールは、

・とある条件を満たすまでは動いていて欲しい

・とある条件を満たしたら落ちて欲しい

という感じになる。

立ち上げっぱなしに対してタスクを与える的な動きは今回は意識しない。

参考として、JettyPluginConversionッつー規約集があったので、目を通してみる。

http://www.gradle.org/docs/current/javadoc/index.html?org/gradle/api/plugins/jetty/JettyPluginConvention.html

この時点でのbuild.gradleがこんな感じ

apply plugin : 'jetty'


war {

    baseName = 'someWebApp'

    archiveName = "something"

    from 'war' 

 

    manifest {

        attributes 'Implementation-Title': 'something'

        attributes 'Implementation-Version': 'some version'

        attributes provider: 'gradle'

    }

}


task jettyRunTasks << {

/*    httpPort = jettyConfig.port*/

println "jettyRun before..."

//mada yoku wakatte nai

    jettyRunWar.daemon = false //no effect

println "getWebApp "+jettyRunWar.getWebApp() // /Users/sassembla/Desktop/test/build/libs/something

println "getJettyConfig "+jettyRunWar.getJettyConfig() //null

// jettyRunWar.restartWebApp(false)

// jettyRunWar.createServer() //creates something,,

jettyRunWar.startJetty() //Run!! but with eror..

// jettyRunWar.startJettyInternal() //same above

println "jettyRun...after"

}